<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;
use \DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use \App\Http\Requests\UserPostRequest;
use Hash;
use Session;

class UserController extends Controller
{
   
    /**
     * 用户添加页面
     *
     * @return void
     */
    //隐式控制器中间件(在该隐式控制器的方法里加上如下代码,就可以限定该隐式控制器的所有方法)
    protected $middleware = ['App\Http\Middleware\LogMiddleware'=>[]];
    public function getAdd()
    {
        
        //返回到添加页
        return view('admin.user.add');
    }

    /**
     * ajax注册验证
     * $name 用户账号
     * @return 1
     */
    public function getSelect(Request $request)
    {

        //获取用户信息
        $name = $_GET['name'];
        //查询用户信息
        $res = DB::table('user')->where('username',$name)->first();
        if(empty($res)){
            echo 1;
        }else{
            echo 2;
        }
    }

    /**
     * ajax冻结用户
     * $id 用户id
     * $status 用户信息
     * @return $res
     */
    public function postFrozen(Request $request)
    {
        //获取用户id
        $id = $request->input('id');
        //查询用户信息
        $status = DB::table('user')->where('id',$id)->first();
        // dd($status);
        //判断用户状态
        if($status->status == 0){
            //修改用户状态
            $res = DB::table('user')->where('id',$id)->update(['status'=>1]);
        }else{
            $res = DB::table('user')->where('id',$id)->update(['status'=>0]);
        }
        echo $res;
    }

    /**
     * 用户数据添加
     * $data 用户提交信息
     * $res 用户id值
     * @return void
     */
    public function postInsert(UserPostRequest $request)
    {
    	//提取数据
    	$data = $request->except(['_token']);
        //密码hash加密
        $data['password'] = Hash::make($data['password']);
        // dd($data);
    	//执行数据库操作
    	$res = DB::table('user')->insertGetId($data);
    	// dd($res);
        //图片路径
        $portrait = "/public/portrait/default.jpg";
    	//跳转页面
    	if($res){
    		//用户添加成功后给用户添加5经验
    		DB::table('userdetail')->insert(['portrait'=>$portrait,'score'=>5,'nickname'=>'爱tv'.(time()+rand(100000,999999)),'uid'=>$res]);
    		return redirect('admin/user/index');
    	}else{
    		return back()->withInput();
    	}
 
    }

    /**
     * 用户列表
     * $num 页面显示条数
     * $users 所有用户资料
     * $all 查询和条数参数
     * @return $users,$all
     */
    public function getIndex(Request $request)
    {
    	//显示获取显示条数
    	$num = $request->input('num',10);
        //查询管理员权限
        $res = DB::table('user')->where('id',$_SESSION['id'])->first();
        if($res->auth == 5){
        	//判断用户是否查询
        	if($request->input('keyword')){
        		//查找数据库用户资料
        		$users = DB::table('userdetail')
        		->join('user', 'user.id', '=', 'userdetail.uid')
        		->where('username','like','%'.$request->input('keyword').'%')
        		->where('auth','<','5')
                ->paginate($num);
        	}else{
        		$users = DB::table('user')->join('userdetail', 'userdetail.uid', '=', 'user.id')->where('auth','<','5')->paginate($num);
        	   // dd($users);
            }
    	}else{
            //判断用户是否查询
            if($request->input('keyword')){
                //查找数据库用户资料
                $users = DB::table('userdetail')
                ->join('user', 'user.id', '=', 'userdetail.uid')
                ->where('username','like','%'.$request->input('keyword').'%')
                ->where('auth','<','4')
                ->paginate($num);
            }else{
                $users = DB::table('user')->join('userdetail', 'userdetail.uid', '=', 'user.id')->where('auth','<','4')->paginate($num);
               // dd($users);
            }
        }
    	//获取参数
    	$all = $request->all();
    	// dd($all);
        return view('admin.user.index',['users'=>$users,'all'=>$all]);
    } 

    /**
     * 用户修改页
     * $id 用户id
     * $res 用户信息
     * @return $res
     */
    public function getUp(Request $request)
    {
        //获取用户id
        $id = $request->input('id');
        //获取用户信息
        $res = DB::table('user')->where('id',$id)->get();
        //返回数据
        return view('admin.user.update',['res'=>$res]);
    }

    
    /**
     * 修改用户数据
     * $data 用户提交信息
     * $res 用户修改信息
     * @return void
     */
    public function postUpdate(Request $request)
    {
        //获取信息
        $data = $request->except(['_token']); 
        // dd($data);
        //判断填写信息是否为空
        if($data['password'] == ''){
            return back()->with('error','填写信息不能为空');
        }
        //进行哈希加密
        $data['password'] = Hash::make($data['password']);
        //修改数据库信息
        $res = DB::table('user')->where('id',$data['id'])->update($data);
        //判断
        if($res){
            return redirect('admin/user/index')->with('success','修改成功');
        }else{
            return back()->with('error','修改失败');
        }

    }

    /**
     * 用户退出
     * @return void
     */
    public function getExit()
    {
        // session()->forget('id');
        //删除session文件
        session_destroy();
        //销毁session
        unset($_SESSION);
        // $request->session()->forget('id');
        return redirect('admin/user/login');
    }
}
